home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / kernel / dev / ds3100.md / sii.h < prev    next >
C/C++ Source or Header  |  1992-12-18  |  8KB  |  202 lines

  1. /*
  2.  * sii.h --
  3.  *
  4.  *     SII registers.
  5.  *
  6.  *    Copyright (C) 1989 Digital Equipment Corporation.
  7.  *    Permission to use, copy, modify, and distribute this software and
  8.  *    its documentation for any purpose and without fee is hereby granted,
  9.  *    provided that the above copyright notice appears in all copies.
  10.  *    Digital Equipment Corporation makes no representations about the
  11.  *    suitability of this software for any purpose.  It is provided "as is"
  12.  *    without express or implied warranty.
  13.  *
  14.  * $Header: /cdrom/src/kernel/Cvsroot/kernel/dev/ds3100.md/sii.h,v 9.0 89/09/12 15:02:08 douglis Stable $ SPRITE (DECWR
  15. L)
  16.  */
  17.  
  18. #ifndef _SII
  19.  
  20. #include "scsiDevice.h"
  21. #include "machAddrs.h"
  22.  
  23. /*
  24.  * SII registers
  25.  */
  26. typedef struct {
  27.     unsigned short sdb;    /* SCSI Data Bus and Parity        */
  28.     unsigned short pad0;
  29.     unsigned short sc1;    /* SCSI Control Signals One        */
  30.     unsigned short pad1;
  31.     unsigned short sc2;    /* SCSI Control Signals Two        */
  32.     unsigned short pad2;
  33.     unsigned short csr;    /* Control/Status register        */
  34.     unsigned short pad3;
  35.     unsigned short id;        /* Bus ID register        */
  36.     unsigned short pad4;
  37.     unsigned short slcsr;    /* Select Control and Status Register    */
  38.     unsigned short pad5;
  39.     unsigned short destat;    /* Selection Detector Status Register    */
  40.     unsigned short pad6;
  41.     unsigned short dstmo;    /* DSSI Timeout Register        */
  42.     unsigned short pad7;
  43.     unsigned short data;    /* Data Register            */
  44.     unsigned short pad8;
  45.     unsigned short dmctrl;    /* DMA Control Register            */
  46.     unsigned short pad9;
  47.     unsigned short dmlotc;    /* DMA Length of Transfer Counter    */
  48.     unsigned short pad10;
  49.     unsigned short dmaddrl;    /* DMA Address Register Low        */
  50.     unsigned short pad11;
  51.     unsigned short dmaddrh;    /* DMA Address Register High        */
  52.     unsigned short pad12;
  53.     unsigned short dmabyte;    /* DMA Initial Byte Register        */
  54.     unsigned short pad13;
  55.     unsigned short stlp;    /* DSSI Short Target List Pointer    */
  56.     unsigned short pad14;
  57.     unsigned short ltlp;    /* DSSI Long Target List Pointer    */
  58.     unsigned short pad15;
  59.     unsigned short ilp;    /* DSSI Initiator List Pointer        */
  60.     unsigned short pad16;
  61.     unsigned short dsctrl;    /* DSSI Control Register        */
  62.     unsigned short pad17;
  63.     unsigned short cstat;    /* Connection Status Register        */
  64.     unsigned short pad18;
  65.     unsigned short dstat;    /* Data Transfer Status Register    */
  66.     unsigned short pad19;
  67.     unsigned short comm;    /* Command Register            */
  68.     unsigned short pad20;
  69.     unsigned short dictrl;    /* Diagnostic Control Register        */
  70.     unsigned short pad21;
  71.     unsigned short clock;    /* Diagnostic Clock Register        */
  72.     unsigned short pad22;
  73.     unsigned short bhdiag;    /* Bus Handler Diagnostic Register    */
  74.     unsigned short pad23;
  75.     unsigned short sidiag;    /* SCSI IO Diagnostic Register        */
  76.     unsigned short pad24;
  77.     unsigned short dmdiag;    /* Data Mover Diagnostic Register    */
  78.     unsigned short pad25;
  79.     unsigned short mcdiag;    /* Main Control Diagnostic Register    */
  80.     unsigned short pad26;
  81. } SIIRegs;
  82.  
  83. #define SII_REG_BASE    (volatile SIIRegs *)MACH_SCSI_INTERFACE_ADDR
  84. #define SII_BUF_BASE    (volatile char *)MACH_SCSI_BUFFER_ADDR
  85. #define SII_REG_ADDR    (SII_REG_BASE)
  86. #define SII_BUF_ADDR    (SII_BUF_BASE)
  87.  
  88. /*
  89.  * SC1 - SCSI Control Signals One
  90.  */
  91. #define SII_SC1_MSK    0x1ff        /* All possible signals on the bus    */
  92. #define SII_SC1_SEL    0x80        /* SCSI SEL signal active on bus      */
  93. #define SII_SC1_ATN    0x08        /* SCSI ATN signal active on bus      */
  94.  
  95. /*
  96.  * SC2 - SCSI Control Signals Two
  97.  */
  98. #define SII_SC2_IGS    0x8        /* SCSI drivers for initiator mode    */
  99.  
  100. /*
  101.  * CSR - Control/Status Register
  102.  */
  103. #define SII_HPM    0x10            /* SII in on an arbitrated SCSI bus   */
  104. #define    SII_RSE    0x08            /* 1 = respond to reselections          */
  105. #define SII_SLE    0x04            /* 1 = respond to selections          */
  106. #define SII_PCE    0x02            /* 1 = report parity errors          */
  107. #define SII_IE    0x01            /* 1 = enable interrupts          */
  108.  
  109. /*
  110.  * ID - Bus ID Register
  111.  */
  112. #define SII_ID_IO    0x8000        /* I/O                       */
  113.  
  114. /*
  115.  * DESTAT - Selection Detector Status Register
  116.  */
  117. #define SII_IDMSK    0x7        /* ID of target reselected the SII    */
  118.  
  119. /*
  120.  * DMCTRL - DMA Control Register
  121.  */
  122. #define SII_ASYNC    0x00        /* REQ/ACK Offset for async mode      */
  123. #define SII_SYNC    0x03        /* REQ/ACK Offset for sync mode          */
  124.  
  125. /*
  126.  * DMLOTC - DMA Length Of Transfer Counter
  127.  */
  128. #define SII_TCMSK    0x1fff        /* transfer count mask              */
  129.  
  130. /*
  131.  * CSTAT - Connection Status Register
  132.  */
  133. #define    SII_CI        0x8000    /* composite interrupt bit for CSTAT          */
  134. #define SII_DI        0x4000    /* composite interrupt bit for DSTAT          */
  135. #define SII_RST_ONBUS    0x2000    /* 1 if reset is asserted on SCSI bus          */
  136. #define    SII_BER        0x1000    /* Bus error                      */
  137. #define    SII_OBC        0x0800    /* Out_en Bit Cleared (DSSI mode)          */
  138. #define SII_TZ        0x0400    /* Target pointer Zero (STLP or LTLP is zero) */
  139. #define    SII_BUF        0x0200    /* Buffer service - outbound pkt to non-DSSI  */
  140. #define SII_LDN        0x0100    /* List element Done                  */
  141. #define SII_SCH        0x0080    /* State Change                      */
  142. #define SII_CON        0x0040    /* SII is Connected to another device          */
  143. #define SII_DST_ONBUS    0x0020    /* SII was Destination of current transfer    */
  144. #define SII_TGT_ONBUS    0x0010    /* SII is operating as a Target              */
  145. #define SII_SWA        0x0008    /* Selected With Attention              */
  146. #define SII_SIP        0x0004    /* Selection In Progress              */
  147. #define SII_LST        0x0002    /* Lost arbitration                  */
  148.  
  149. /*
  150.  * DSTAT - Data Transfer Status Register
  151.  */
  152. #define SII_DNE        0x2000    /* DMA transfer Done                  */
  153. #define SII_TCZ        0x1000    /* Transfer Count register is Zero          */
  154. #define SII_TBE        0x0800    /* Transmit Buffer Empty              */
  155. #define SII_IBF        0x0400    /* Input Buffer Full                  */
  156. #define SII_IPE        0x0200    /* Incoming Parity Error              */
  157. #define SII_OBB        0x0100    /* Odd Byte Boundry                  */
  158. #define SII_MIS        0x0010    /* Phase Mismatch                  */
  159. #define SII_ATN        0x0008    /* ATN set by initiator if in Target mode     */
  160. #define SII_MSG        0x0004    /* current bus state of MSG              */
  161. #define SII_CD        0x0002    /* current bus state of C/D              */
  162. #define SII_IO        0x0001    /* current bus state of I/O              */
  163. #define SII_PHA_MSK    0x0007    /* Phase Mask                      */
  164.  
  165. /*
  166.  * COMM - Command Register
  167.  */
  168. #define    SII_DMA        0x8000    /* DMA mode                      */
  169. #define SII_RST        0x4000    /* Assert reset on SCSI bus for 25 usecs      */
  170. #define SII_RSL        0x1000    /* 0 = select, 1 = reselect desired device    */
  171.  
  172. /* Commands     I - Initiator, T - Target, D - Disconnected              */
  173. #define SII_INXFER    0x0800    /* Information Transfer command    (I,T)          */
  174. #define SII_SELECT    0x0400    /* Select command        (D)          */
  175. #define SII_REQDATA    0x0200    /* Request Data command        (T)          */
  176. #define    SII_DISCON    0x0100    /* Disconnect command        (I,T,D)          */
  177. #define SII_CHRESET    0x0080    /* Chip Reset command        (I,T,D)          */
  178. /* Chip state bits */
  179. #define    SII_CON        0x0040    /* Connected                      */
  180. #define SII_DST        0x0020    /* Destination                      */
  181. #define SII_TGT        0x0010    /* Target                      */
  182. #define SII_STATE_MSK  0x0070    /* State Mask                      */
  183. /* SCSI control lines */
  184. #define SII_ATN        0x0008    /* Assert the SCSI bus ATN signal          */
  185. #define    SII_MSG        0x0004    /* Assert the SCSI bus MSG signal          */
  186. #define    SII_CD        0x0002    /* Assert the SCSI bus C/D signal          */
  187. #define    SII_IO        0x0001    /* Assert the SCSI bus I/O signal          */
  188.  
  189. /*
  190.  * DICTRL - Diagnostic Control Register
  191.  */
  192. #define SII_PRE        0x4    /* Enable the SII to drive the SCSI bus          */
  193.  
  194. #define SII_WAIT_COUNT        10000   /* Delay count used for the SII chip  */
  195. #define SII_MAX_DMA_XFER_LENGTH    8192      /* Max DMA transfer length for SII    */
  196.  
  197. ClientData    DevSIIInit();
  198. Boolean        Dev_SIIIntr();
  199. ScsiDevice    *DevSIIAttachDevice();
  200.  
  201. #endif /* _SII */
  202.